package com.angel.architecture.persistence.interfaces;

/**
 *  Esta interfaz la deberian implementar todos los objetos de negocio que necesitan ser sincronizados
 * contra cualquier tipo de elemento. ya sea un xml, txt, csv, etc.
 *
 * @author ALeinvand
 * @version $Revision: 1.2 $
 */
public interface Synchronizable {

    /**
     *  Este metodo deberia contener toda la logica de lo que se desea sincronizar.
     *  Este metodo lo implementa PersistentObject, pero no hace nada, aquella clase de negocio que necesita
     * ser sincronizada, deberia poner la logica en este metodo.
     *  Se sincroniza cuando hibernate detecta update, save o cuando se llama a saveOrUpdate de GenericDAO.
     *
     *  Este metodo deberia tener todas los atributos que se desean sincronizar, ya sean variables o
     * collections.
     */
    public void synchronizedState();

}
